#include <string>

#define DELETE_IVF 1
#define KEEP_IVF 0

#define NO_ART_DET 0
#define ART_DET 1

/////Tests
int run_multiple_tests(int argc,
                              const char** argv,
                              std::string working_dir,
                              int number_of_tests,
                              int delete_ivf_files,
                              int artifact_detection);
int test_allow_drop_frames(int argc,
                                  const char** argv,
                                  const std::string &working_dir,
                                  const std::string sub_folder_str,
                                  int test_type,
                                  int delete_ivf_files,
                                  int artifact_detection);
int test_allow_lag(int argc,
                          const char** argv,
                          const std::string &working_dir,
                          const std::string sub_folder_str,
                          int test_type,
                          int delete_ivf_files,
                          int artifact_detection);
int test_allow_spatial_resampling(int argc,
                                         const char** argv,
                                         const std::string &working_dir,
                                         const std::string sub_folder_str,
                                         int test_type,
                                         int delete_ivf_files,
                                         int artifact_detection);
int test_arnr(int argc,
                     const char** argv,
                     const std::string &working_dir,
                     const std::string sub_folder_str,
                     int test_type,
                     int delete_ivf_files,
                     int artifact_detection);
int test_auto_key_frame(int argc,
                               const char** argv,
                               const std::string &working_dir,
                               const std::string sub_folder_str,
                               int test_type,
                               int delete_ivf_files,
                               int artifact_detection);
int test_buffer_level(int argc,
                             const char** argv,
                             const std::string &working_dir,
                             const std::string sub_folder_str,
                             int test_type,
                             int delete_ivf_files,
                             int artifact_detection);
int test_change_cpu_dec(int argc,
                               const char** argv,
                               const std::string &working_dir,
                               const std::string sub_folder_str,
                               int test_type,
                               int delete_ivf_files,
                               int artifact_detection);
int test_change_cpu_enc(int argc,
                               const char** argv,
                               const std::string &working_dir,
                               const std::string sub_folder_str,
                               int test_type,
                               int delete_ivf_files,
                               int artifact_detection);
int test_constrained_quality(int argc,
                                    const char** argv,
                                    const std::string &working_dir,
                                    const std::string sub_folder_str,
                                    int test_type,
                                    int delete_ivf_files,
                                    int artifact_detection);
int test_copy_set_reference(int argc,
                                   const char** argv,
                                   const std::string &working_dir,
                                   const std::string sub_folder_str,
                                   int test_type,
                                   int delete_ivf_files,
                                   int artifact_detection);
int test_drop_frame_watermark(int argc,
                                     const char** argv,
                                     const std::string &working_dir,
                                     const std::string sub_folder_str,
                                     int test_type,
                                     int delete_ivf_files,
                                     int artifact_detection);
int test_data_rate(int argc,
                          const char** argv,
                          const std::string &working_dir,
                          const std::string sub_folder_str,
                          int test_type,
                          int delete_ivf_files,
                          int artifact_detection);
int test_debug_matches_release(int argc,
                                      const char** argv,
                                      const std::string &working_dir,
                                      const std::string sub_folder_str,
                                      int test_type,
                                      int delete_ivf_files,
                                      int artifact_detection);
int test_encoder_break_out(int argc,
                                  const char** argv,
                                  const std::string &working_dir,
                                  const std::string sub_folder_str,
                                  int test_type,
                                  int delete_ivf_files,
                                  int artifact_detection);
int test_error_concealment(int argc,
                                  const char** argv,
                                  const std::string &working_dir,
                                  const std::string sub_folder_str,
                                  int test_type,
                                  int delete_ivf_files,
                                  int artifact_detection);
int test_error_resolution(int argc,
                                 const char** argv,
                                 const std::string &working_dir,
                                 const std::string sub_folder_str,
                                 int test_type,
                                 int delete_ivf_files,
                                 int artifact_detection);
int test_extra_file(int argc,
                           const char** argv,
                           const std::string &working_dir,
                           const std::string sub_folder_str,
                           int test_type,
                           int delete_ivf_files,
                           int artifact_detection);
int test_fixed_quantizer(int argc,
                                const char** argv,
                                const std::string &working_dir,
                                const std::string sub_folder_str,
                                int test_type,
                                int delete_ivf_files,
                                int artifact_detection);
int test_force_key_frame(int argc,
                                const char** argv,
                                const std::string &working_dir,
                                const std::string sub_folder_str,
                                int test_type,
                                int delete_ivf_files,
                                int artifact_detection);
int test_frame_size(int argc,
                           const char** argv,
                           const std::string &working_dir,
                           const std::string sub_folder_str,
                           int test_type,
                           int delete_ivf_files,
                           int artifact_detection);
int test_good_vs_best(int argc,
                             const char** argv,
                             const std::string &working_dir,
                             const std::string sub_folder_str,
                             int test_type,
                             int delete_ivf_files,
                             int artifact_detection);
int test_lag_in_frames(int argc,
                              const char** argv,
                              const std::string &working_dir,
                              const std::string sub_folder_str,
                              int test_type,
                              int delete_ivf_files,
                              int artifact_detection);
int test_max_quantizer(int argc,
                              const char** argv,
                              const std::string &working_dir,
                              const std::string sub_folder_str,
                              int test_type,
                              int delete_ivf_files,
                              int artifact_detection);
int test_mem_leak(int argc,
                         const char** argv,
                         const std::string &working_dir,
                         const std::string sub_folder_str,
                         int test_type,
                         int delete_ivf_files,
                         int artifact_detection);
int test_mem_leak2(int argc,
                          const char** argv,
                          const std::string &working_dir,
                          const std::string sub_folder_str,
                          int test_type,
                          int delete_ivf_files,
                          int artifact_detection);
int test_min_quantizer(int argc,
                              const char** argv,
                              const std::string &working_dir,
                              const std::string sub_folder_str,
                              int test_type,
                              int delete_ivf_files,
                              int artifact_detection);
int test_multiple_resolution_encode(int argc,
                                           const char** argv,
                                           const std::string &working_dir,
                                           const std::string sub_folder_str,
                                           int test_type,
                                           int delete_ivf_files,
                                           int artifact_detection);
int test_multithreaded_dec(int argc,
                                  const char** argv,
                                  const std::string &working_dir,
                                  const std::string sub_folder_str,
                                  int test_type,
                                  int delete_ivf_files,
                                  int artifact_detection);
int test_multithreaded_enc(int argc,
                                  const char** argv,
                                  const std::string &working_dir,
                                  const std::string sub_folder_str,
                                  int test_type,
                                  int delete_ivf_files,
                                  int artifact_detection);
int test_new_vs_old_psnr(int argc,
                                const char** argv,
                                const std::string &working_dir,
                                const std::string sub_folder_str,
                                int test_type,
                                int delete_ivf_files,
                                int artifact_detection);
int test_new_vs_old_temp_scale(int argc,
                                      const char** argv,
                                      const std::string &working_dir,
                                      const std::string sub_folder_str,
                                      int test_type,
                                      int delete_ivf_files,
                                      int artifact_detection);
int test_new_vs_old_enc_cpu_tick(int argc,
                                        const char** argv,
                                        const std::string &working_dir,
                                        const std::string sub_folder_str,
                                        int test_type,
                                        int delete_ivf_files,
                                        int artifact_detection);
int test_noise_sensitivity(int argc,
                                  const char** argv,
                                  const std::string &working_dir,
                                  const std::string sub_folder_str,
                                  int test_type,
                                  int delete_ivf_files,
                                  int artifact_detection);
int test_one_pass_vs_two_pass(int argc,
                                     const char** argv,
                                     const std::string &working_dir,
                                     const std::string sub_folder_str,
                                     int test_type,
                                     int delete_ivf_files,
                                     int artifact_detection);
int test_play_alternate(int argc,
                               const char** argv,
                               const std::string &working_dir,
                               const std::string sub_folder_str,
                               int test_type,
                               int delete_ivf_files,
                               int artifact_detection);
int test_post_processor(int argc,
                               const char** argv,
                               const std::string &working_dir,
                               const std::string sub_folder_str,
                               int test_type,
                               int delete_ivf_files,
                               int artifact_detection);
int test_post_processor_mfqe(int argc,
                                   const char** argv,
                                   const std::string &working_dir,
                                   const std::string sub_folder_str,
                                   int test_type,
                                   int delete_ivf_files,
                                   int artifact_detection);
int test_reconstruct_buffer(int argc,
                                   const char** argv,
                                   const std::string &working_dir,
                                   const std::string sub_folder_str,
                                   int test_type,
                                   int delete_ivf_files,
                                   int artifact_detection);
int test_resample_down_watermark(int argc,
                                        const char** argv,
                                        const std::string &working_dir,
                                        const std::string sub_folder_str,
                                        int test_type,
                                        int delete_ivf_files,
                                        int artifact_detection);
int test_speed(int argc,
                      const char** argv,
                      const std::string &working_dir,
                      const std::string sub_folder_str,
                      int test_type,
                      int delete_ivf_files,
                      int artifact_detection);
int test_temporal_scalability(int argc,
                                     const char** argv,
                                     const std::string &working_dir,
                                     const std::string sub_folder_str,
                                     int test_type,
                                     int delete_ivf_files,
                                     int artifact_detection);
int test_test_vector(int argc,
                            const char** argv,
                            const std::string &working_dir,
                            const std::string sub_folder_str,
                            int test_type,
                            int delete_ivf_files,
                            int artifact_detection);
int test_thirtytwo_vs_sixtyfour(int argc,
                                       const char** argv,
                                       const std::string &working_dir,
                                       const std::string sub_folder_str,
                                       int test_type,
                                       int delete_ivf_files,
                                       int artifact_detection);
int test_two_pass_vs_two_pass_best(int argc,
                                          const char** argv,
                                          const std::string &working_dir,
                                          const std::string sub_folder_str,
                                          int test_type,
                                          int delete_ivf_files,
                                          int artifact_detection);
int test_undershoot(int argc,
                           const char** argv,
                           const std::string &working_dir,
                           const std::string sub_folder_str,
                           int test_type,
                           int delete_ivf_files,
                           int artifact_detection);
int test_version(int argc,
                        const char** argv,
                        const std::string &working_dir,
                        const std::string sub_folder_str,
                        int test_type,
                        int delete_ivf_files,
                        int artifact_detection);
int test_vpx_matches_int(int argc,
                                const char** argv,
                                const std::string &working_dir,
                                const std::string sub_folder_str,
                                int test_type,
                                int delete_ivf_files,
                                int artifact_detection);
int test_win_lin_mac_match(int argc,
                                  const char** argv,
                                  const std::string &working_dir,
                                  const std::string sub_folder_str,
                                  int test_type,
                                  int delete_ivf_files,
                                  int artifact_detection);

//Tools
int tool_rand_comp(int argc,
                          const char** argv,
                          const std::string &working_dir,
                          const std::string sub_folder_str,
                          int test_type);
int tool_graph_psnr(int argc,
                           const char** argv,
                           const std::string &working_dir,
                           const std::string sub_folder_str,
                           int test_type);
